package net.oschina.bilbodai.common.beanutil.bean;

/**
 * @author daimao  Date: 16/4/20 Time: 下午5:47
 * @version $Id$
 */
public interface IBeanAccessor<S, T> {

    /**
     * 将源实例的属性值按照规则拷贝到目标实例对应的属性中.
     *
     * @param src    源实例
     * @param target 目标实例, 可以传null,如果传null,保证Target有空构造函数,IBeanAccessor会自动创建一个新的实例返回
     * @return 传入的目标实例
     */
    T propertyDump(S src, T target);

    /**
     *
     * 将源实例的属性值按照规则拷贝到目标实例对应的属性中. {@link IBeanAccessor} 会自动创建目标实例,前提是保证有默认的构造函数
     * @param src    源实例
     * @return 传入的目标实例
     */
    T propertyDump(S src);
}
